package com.spring.demo.jdkproxy;

/**
 * @version 1.0.0
 * @Date: 2022/5/30 14:53
 * @Author ZhuYouBin
 * @Description
 */

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

/** 代理工厂: 专门用于生成代理对象 */
public class ProxyFactory {

    /** 通过JDK创建动态代理的方法 */
    public static Object getProxyInstance(Object target) {
        // 类加载器
        ClassLoader classLoader = target.getClass().getClassLoader();
        // 接口类型
        Class<?>[] interfaces = target.getClass().getInterfaces();
        // 动态代理具体执行的逻辑
        InvocationHandler invocationHandler = new CustomInvocationHandler(target);
        // 通过JDK提供的方法执生成代理对象
        return Proxy.newProxyInstance(classLoader, interfaces, invocationHandler);
    }

}
